package com.baojianren.bean;

import java.awt.Color;
import java.awt.Graphics;

import com.baojianren.tank.Dir;
import com.baojianren.tank.TankFrame;

/**
 * @author ௸྄ིོུ倾心คิดถ
 * @version 创建时间：2020年12月26日 下午10:15:30
 * @ClassName 坦克子弹类
 * @Description 创建子弹
 */
public class Bullet {
	private static final int SPEED = 10;// 子弹的移动速度
	private static final int WIDTH = 10, HEIGHT = 10;// 子弹大小
	private int x, y;// 子弹的移动坐标位置
	private Dir dir;// 子弹的方向
	public TankFrame frame=null;
	private boolean live = true; // 表示子弹存活状态true为存活 false为销毁

	public Bullet() {
	}

	public Bullet(int x, int y, Dir dir,TankFrame frame) {
		super();
		this.x = x;
		this.y = y;
		this.dir = dir;
		this.frame=frame;
	}

	public int getX() {
		return x;
	}

	public void setX(int x) {
		this.x = x;
	}

	public int getY() {
		return y;
	}

	public void setY(int y) {
		this.y = y;
	}

	public Dir getDir() {
		return dir;
	}

	public void setDir(Dir dir) {
		this.dir = dir;
	}

	/**
	 * 绘制子弹
	 * 
	 * @param g
	 */
	public void paint(Graphics g) {
		// 如果子弹销毁则在集合中删除子弹
		if(!live) {
			frame.bullets.remove(this);
		}
		// 获取原来的画笔颜色
		Color c = g.getColor();
		// 设置画笔颜色
		g.setColor(Color.RED);
		// 绘制子弹圆形
		g.fillOval(x, y, WIDTH, HEIGHT);
		// 设置画笔为原来的颜色
		g.setColor(c);
		move();
	}

	/**
	 * 控制子弹移动方向
	 */
	private void move() {
		switch (dir) {
		case LEFT:
			x -= SPEED;
			break;
		case UP:
			y -= SPEED;
			break;
		case RIGHT:
			x += SPEED;
			break;
		case DOWN:
			y += SPEED;
			break;
		case A:
			x -= SPEED;
			break;
		case W:
			y -= SPEED;
			break;
		case D:
			x += SPEED;
			break;
		case S:
			y += SPEED;
			break;

		default:
			break;
		}
		// 如果X和Y轴超过窗口大小则赋值为销毁状态
		if (x < 0 || y < 0 || x > TankFrame.GAME_WIDTH || y> TankFrame.GAME_HEIGHT) {
			live = false;
		}
	}
}
